/**
 * jims
 */
package com.jims.master.modules.operation.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.jims.master.common.persistence.DataEntity;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 术后登记手术Entity
 * @author ZhuQ
 * @version 2017-04-13
 */
public class OperationMaster extends DataEntity<OperationMaster> {
	
	private static final long serialVersionUID = 1L;
	private String clinicId;		// 就诊记录ID
	private String visitId;		// 住院ID
	private String patientId;		// 病人信息Id
	private String scheduledId;		// 术前安排Id
	private String inoroutFlag;		// 住院/门诊
	private Integer operNo;		// 本次入院手术次数
	private Date scheduledDate;		// 手术日期及时间
    private Date makeDate;          //结束时间
	private String operatingRoomId;		// 手术室
	private String operatingRoomNo;		// 手术间
	private Integer suquence;		// 台次(这一天这个手术室的第几台手术)
	private String diagBeforeOperation;		// 术前主要诊断
	private String diagAfterOperation;		// 术后主要诊断
	private String patientCondition;		// 病情说明(危/重/一般)
	private String operationScale;		// 手术等级
	private String operationClass;		// 1-一般手术 2-急抢救手术 3-术中急抢救。。。
	private String isolationIndicator;		// 隔离标志
	private String doctorUser;		// 手术开单医生
	private String operationDeptId;		// 手术开单科室
	private String anesthesiaMethod;		// 麻醉方法
	private String emergencyFlag;		// 0-择期 1-急诊
	private String opsBodyPart;		// 手术部位
	private String provideWay;		// 供血方式
	private String satisfactionDegree;		// 麻醉满意度
	private String smoothIndicator;		// 手术满定度
	private Double inFluidsAmount;		// 液体总输入量
	private Double outFluidsAmount;		// 液体总输出量
	private Double bloodLossed;		// 失血量
	private Double bloodTransfered;		// 输血量
	private String chargeTransfer;		// 费用结算标志(出院结算时修改)
	private String nurseShiftFlag;		// 护士是否换班
    private Boolean batch;
    private OperationSchedule operationSchedule;
    private List<OperationNameAfter> operationNameAfterList; //手术项目

    private OperationStaffAfter zdStaffBefore;
    private OperationStaffAfter myStaffBefore;
    private OperationStaffAfter yzStaffBefore;
    private OperationStaffAfter sxStaffBefore;
    private OperationStaffAfter mzStaffBefore;
    private OperationStaffAfter gyStaffBefore;
    private OperationStaffAfter stStaffBefore;

    public OperationMaster() {
		super();
	}

	public OperationMaster(String id){
		super(id);
	}

	@Length(min=0, max=64, message="就诊记录ID长度必须介于 0 和 64 之间")
	public String getClinicId() {
		return clinicId;
	}

	public void setClinicId(String clinicId) {
		this.clinicId = clinicId;
	}
	
	@Length(min=0, max=64, message="住院ID长度必须介于 0 和 64 之间")
	public String getVisitId() {
		return visitId;
	}

	public void setVisitId(String visitId) {
		this.visitId = visitId;
	}
	
	@Length(min=1, max=64, message="病人信息Id长度必须介于 1 和 64 之间")
	public String getPatientId() {
		return patientId;
	}

	public void setPatientId(String patientId) {
		this.patientId = patientId;
	}
	
	@Length(min=1, max=64, message="术前安排Id长度必须介于 1 和 64 之间")
	public String getScheduledId() {
		return scheduledId;
	}

	public void setScheduledId(String scheduledId) {
		this.scheduledId = scheduledId;
	}
	
	@Length(min=1, max=1, message="住院/门诊长度必须介于 1 和 1 之间")
	public String getInoroutFlag() {
		return inoroutFlag;
	}

	public void setInoroutFlag(String inoroutFlag) {
		this.inoroutFlag = inoroutFlag;
	}
	
	@NotNull(message="本次入院手术次数不能为空")
	public Integer getOperNo() {
		return operNo;
	}

	public void setOperNo(Integer operNo) {
		this.operNo = operNo;
	}
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	@NotNull(message="手术日期及时间不能为空")
	public Date getScheduledDate() {
		return scheduledDate;
	}

	public void setScheduledDate(Date scheduledDate) {
		this.scheduledDate = scheduledDate;
	}
	
	@Length(min=1, max=64, message="手术室长度必须介于 1 和 64 之间")
	public String getOperatingRoomId() {
		return operatingRoomId;
	}

	public void setOperatingRoomId(String operatingRoomId) {
		this.operatingRoomId = operatingRoomId;
	}
	
	@Length(min=1, max=64, message="手术间长度必须介于 1 和 64 之间")
	public String getOperatingRoomNo() {
		return operatingRoomNo;
	}

	public void setOperatingRoomNo(String operatingRoomNo) {
		this.operatingRoomNo = operatingRoomNo;
	}
	
	public Integer getSuquence() {
		return suquence;
	}

	public void setSuquence(Integer suquence) {
		this.suquence = suquence;
	}
	
	@Length(min=0, max=80, message="术前主要诊断长度必须介于 0 和 80 之间")
	public String getDiagBeforeOperation() {
		return diagBeforeOperation;
	}

	public void setDiagBeforeOperation(String diagBeforeOperation) {
		this.diagBeforeOperation = diagBeforeOperation;
	}
	
	@Length(min=0, max=80, message="术后主要诊断长度必须介于 0 和 80 之间")
	public String getDiagAfterOperation() {
		return diagAfterOperation;
	}

	public void setDiagAfterOperation(String diagAfterOperation) {
		this.diagAfterOperation = diagAfterOperation;
	}
	
	@Length(min=0, max=2, message="病情说明(危/重/一般)长度必须介于 0 和 2 之间")
	public String getPatientCondition() {
		return patientCondition;
	}

	public void setPatientCondition(String patientCondition) {
		this.patientCondition = patientCondition;
	}
	
	@Length(min=0, max=2, message="手术等级长度必须介于 0 和 2 之间")
	public String getOperationScale() {
		return operationScale;
	}

	public void setOperationScale(String operationScale) {
		this.operationScale = operationScale;
	}
	
	@Length(min=0, max=1, message="1-一般手术 2-急抢救手术 3-术中急抢救。。。长度必须介于 0 和 1 之间")
	public String getOperationClass() {
		return operationClass;
	}

	public void setOperationClass(String operationClass) {
		this.operationClass = operationClass;
	}
	
	@Length(min=0, max=2, message="隔离标志长度必须介于 0 和 2 之间")
	public String getIsolationIndicator() {
		return isolationIndicator;
	}

	public void setIsolationIndicator(String isolationIndicator) {
		this.isolationIndicator = isolationIndicator;
	}
	
	@Length(min=0, max=64, message="手术开单医生长度必须介于 0 和 64 之间")
	public String getDoctorUser() {
		return doctorUser;
	}

	public void setDoctorUser(String doctorUser) {
		this.doctorUser = doctorUser;
	}
	
	@Length(min=0, max=64, message="手术开单科室长度必须介于 0 和 64 之间")
	public String getOperationDeptId() {
		return operationDeptId;
	}

	public void setOperationDeptId(String operationDeptId) {
		this.operationDeptId = operationDeptId;
	}
	
	@Length(min=0, max=2, message="麻醉方法长度必须介于 0 和 2 之间")
	public String getAnesthesiaMethod() {
		return anesthesiaMethod;
	}

	public void setAnesthesiaMethod(String anesthesiaMethod) {
		this.anesthesiaMethod = anesthesiaMethod;
	}
	
	@Length(min=0, max=1, message="0-择期 1-急诊长度必须介于 0 和 1 之间")
	public String getEmergencyFlag() {
		return emergencyFlag;
	}

	public void setEmergencyFlag(String emergencyFlag) {
		this.emergencyFlag = emergencyFlag;
	}
	
	@Length(min=0, max=200, message="手术部位长度必须介于 0 和 200 之间")
	public String getOpsBodyPart() {
		return opsBodyPart;
	}

	public void setOpsBodyPart(String opsBodyPart) {
		this.opsBodyPart = opsBodyPart;
	}
	
	@Length(min=0, max=2, message="供血方式长度必须介于 0 和 2 之间")
	public String getProvideWay() {
		return provideWay;
	}

	public void setProvideWay(String provideWay) {
		this.provideWay = provideWay;
	}
	
	@Length(min=0, max=1, message="麻醉满意度长度必须介于 0 和 1 之间")
	public String getSatisfactionDegree() {
		return satisfactionDegree;
	}

	public void setSatisfactionDegree(String satisfactionDegree) {
		this.satisfactionDegree = satisfactionDegree;
	}
	
	@Length(min=0, max=1, message="手术满定度长度必须介于 0 和 1 之间")
	public String getSmoothIndicator() {
		return smoothIndicator;
	}

	public void setSmoothIndicator(String smoothIndicator) {
		this.smoothIndicator = smoothIndicator;
	}
	
	public Double getInFluidsAmount() {
		return inFluidsAmount;
	}

	public void setInFluidsAmount(Double inFluidsAmount) {
		this.inFluidsAmount = inFluidsAmount;
	}
	
	public Double getOutFluidsAmount() {
		return outFluidsAmount;
	}

	public void setOutFluidsAmount(Double outFluidsAmount) {
		this.outFluidsAmount = outFluidsAmount;
	}
	
	public Double getBloodLossed() {
		return bloodLossed;
	}

	public void setBloodLossed(Double bloodLossed) {
		this.bloodLossed = bloodLossed;
	}
	
	public Double getBloodTransfered() {
		return bloodTransfered;
	}

	public void setBloodTransfered(Double bloodTransfered) {
		this.bloodTransfered = bloodTransfered;
	}
	
	@Length(min=0, max=1, message="费用结算标志(出院结算时修改)长度必须介于 0 和 1 之间")
	public String getChargeTransfer() {
		return chargeTransfer;
	}

	public void setChargeTransfer(String chargeTransfer) {
		this.chargeTransfer = chargeTransfer;
	}
	
	@Length(min=0, max=1, message="护士是否换班长度必须介于 0 和 1 之间")
	public String getNurseShiftFlag() {
		return nurseShiftFlag;
	}

	public void setNurseShiftFlag(String nurseShiftFlag) {
		this.nurseShiftFlag = nurseShiftFlag;
	}

    public OperationSchedule getOperationSchedule() {
        return operationSchedule;
    }

    public void setOperationSchedule(OperationSchedule operationSchedule) {
        this.operationSchedule = operationSchedule;
    }

    public List<OperationNameAfter> getOperationNameAfterList() {
        return operationNameAfterList;
    }

    public void setOperationNameAfterList(List<OperationNameAfter> operationNameAfterList) {
        this.operationNameAfterList = operationNameAfterList;
    }


    public Boolean getBatch() {
        return batch;
    }

    public void setBatch(Boolean batch) {
        this.batch = batch;
    }

    public Date getMakeDate() {
        return makeDate;
    }

    public void setMakeDate(Date makeDate) {
        this.makeDate = makeDate;
    }

    public OperationStaffAfter getZdStaffBefore() {
        return zdStaffBefore;
    }

    public void setZdStaffBefore(OperationStaffAfter zdStaffBefore) {
        this.zdStaffBefore = zdStaffBefore;
    }

    public OperationStaffAfter getMyStaffBefore() {
        return myStaffBefore;
    }

    public void setMyStaffBefore(OperationStaffAfter myStaffBefore) {
        this.myStaffBefore = myStaffBefore;
    }

    public OperationStaffAfter getYzStaffBefore() {
        return yzStaffBefore;
    }

    public void setYzStaffBefore(OperationStaffAfter yzStaffBefore) {
        this.yzStaffBefore = yzStaffBefore;
    }

    public OperationStaffAfter getSxStaffBefore() {
        return sxStaffBefore;
    }

    public void setSxStaffBefore(OperationStaffAfter sxStaffBefore) {
        this.sxStaffBefore = sxStaffBefore;
    }

    public OperationStaffAfter getMzStaffBefore() {
        return mzStaffBefore;
    }

    public void setMzStaffBefore(OperationStaffAfter mzStaffBefore) {
        this.mzStaffBefore = mzStaffBefore;
    }

    public OperationStaffAfter getGyStaffBefore() {
        return gyStaffBefore;
    }

    public void setGyStaffBefore(OperationStaffAfter gyStaffBefore) {
        this.gyStaffBefore = gyStaffBefore;
    }

    public OperationStaffAfter getStStaffBefore() {
        return stStaffBefore;
    }

    public void setStStaffBefore(OperationStaffAfter stStaffBefore) {
        this.stStaffBefore = stStaffBefore;
    }
}